package net.hserver.admin.system.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hserver.core.ioc.annotation.Autowired;
import cn.hserver.mvc.annotation.Controller;
import cn.hserver.mvc.annotation.router.POST;
import com.mybatisflex.core.paginate.Page;
import lombok.extern.slf4j.Slf4j;
import net.hserver.admin.system.common.MyResult;
import net.hserver.admin.system.entity.OperLog;
import net.hserver.admin.system.service.OperLogService;

import java.util.Set;

/**
 * 操作日志接口
 *

 */
@Slf4j
@Controller("/operLog")
public class OperLogController {

    @Autowired
    private OperLogService service;

    /**
     * 分页查询列表
     *
     * @param index  当前页|1
     * @param size   页大小|10
     * @param entity 查询实体
     * @return 所有数据
     */
//    @SaCheckPermission("operLog:query")
    @POST("/page/:index/:size")
    public MyResult selectAll( OperLog entity,  Long index,  Long size) {
        Page<OperLog> page = new Page<>(index, size);
        return MyResult.of(service.page(page, entity));
    }
//
//    /**
//     * 不分页查询列表
//     *
//     * @param entity 实体对象
//     * @return 查询结果
//     */
////    @SaCheckPermission("operLog:query")
//    @PostMapping("list")
//    public MyResult list(@RequestBody(required = false) OperLog entity) {
//        return MyResult.of(service.list(entity));
//    }
//
//    /**
//     * 通过主键查询单条数据
//     *
//     * @param id 主键
//     * @return 单条数据
//     */
////    @SaCheckPermission("operLog:query")
//    @GetMapping("{id}")
//    public MyResult getById(@PathVariable Long id) {
//        return MyResult.of(service.getById(id));
//    }
//
//    /**
//     * 新增单条数据
//     *
//     * @param entity 实体对象
//     * @return 新增结果
//     */
////    @SaCheckPermission("operLog:add")
//    @PostMapping
//    public MyResult save(@RequestBody @Validated(Insert.class) OperLog entity) {
//        service.save(entity);
//        return MyResult.success();
//    }
//
//    /**
//     * 修改单条数据
//     *
//     * @param entity 实体对象
//     * @return 修改结果
//     */
////    @SaCheckPermission("operLog:edit")
//    @PutMapping
//    public MyResult update(@RequestBody @Validated(Update.class) OperLog entity) {
//        service.update(entity);
//        return MyResult.success();
//    }

    /**
     * 批量删除数据
     *
     * @param ids 主键集合
     * @return 操作结果
     */
    @SaCheckPermission("operLog:delete")
    @POST("/delete")
    public MyResult deleteByIds(Set<Long> ids) {
        service.deleteByIds(ids);
        return MyResult.success();
    }

    /**
     * 截断表
     */
    @SaCheckPermission("operLog:delete")
    @POST("/truncate")
    public MyResult truncate() {
        service.cleanOperLog();
        return MyResult.success();
    }

}
